package br.ufpe.cin.if680.lightmirror.core;

public class Inicializador {
	public static void init(Parametros p) {
		p.criarCamera();
		p.getZbuffer(); //inicializa o zbuffer
		
		//convertendo os pontos p as cordenadas da camera
		for(int i = 0; i < p.pontos.length; i++){
			 p.camera.converterParaCordenadasCamera(p.pontos[i]); 
		}
		
		//esta sendo somada a norma dos triangulo * area (dando maior pesos para triang com > area
		for(int i = 0; i < p.triangulos.length; i++){
			double area = p.triangulos[i].getArea();
			p.triangulos[i].a.normal = p.triangulos[i].normal.produtoEscalar(area).soma(p.triangulos[i].a.normal);
			p.triangulos[i].b.normal = p.triangulos[i].normal.produtoEscalar(area).soma(p.triangulos[i].b.normal);
			p.triangulos[i].c.normal = p.triangulos[i].normal.produtoEscalar(area).soma(p.triangulos[i].c.normal);
		}
		
		//normalizando os vetores normais dos pontos
		for(int i = 0; i < p.pontos.length; i++){
			p.pontos[i].normal.normalizar();
		}
		
		//passando os pontos de luz para as cordenadas da camera
		for(int i = 0; i < p.getNPontosLuz(); i++){
			p.camera.converterParaCordenadasCamera(p.pl[i]);
		}
		
		Objeto objeto = new Objeto(p);
		p.setObjeto(objeto);
		objeto.pintarRetalhos();
	}
}
